package ru.compft.common.dao;

import ru.compft.common.data.AppRole;

import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 13:40
 * DAO для работы с ролями пользователями
 */
public interface RoleDao {
    /**
     * Получение списка всех ролей системы
     *
     * @return
     */
    List<AppRole> getAllRoles();

    /**
     * Получение определенного количества ролей (count) с определенного индекса
     *
     * @param from
     * @param count
     * @return
     */
    List<AppRole> getRoles(int from, int count);

    /**
     * Подсчитываем все роли в БД
     *
     * @return
     */
    int countAllRoles();

    /**
     * Получение роли по ID
     *
     * @param roleId
     * @return
     */
    AppRole getRoleById(Long roleId);

    /**
     * Получение роли по коду
     *
     * @param code
     * @return
     */
    AppRole getRoleByCode(String code);

    /**
     * Обновляем данные о роли
     *
     * @param newRole
     * @return
     */
    AppRole update(AppRole newRole);

    /**
     * Сохраняем новую роль
     *
     * @param role
     * @return
     */
    AppRole persist(AppRole role);

    /**
     * Удаляем роль
     *
     * @param role
     * @return
     */
    Boolean delete(AppRole role);
}
